package com.homedo.async.mysql.support.meta;

import com.google.common.collect.Maps;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.ToString;

import java.util.Map;

/**
 * @author jgshun
 * @date 2020/1/19 7:30 PM
 */
@Getter
@EqualsAndHashCode
@ToString
public class EntityMetaDataCache {

    private final static Map<Class<?>, EntityMetaData> CACHE = Maps.newConcurrentMap();

    public static EntityMetaData get(Class clz) {
        EntityMetaData entityMetaData = CACHE.get(clz);
        if (entityMetaData == null) {
            EntityMetaData newEntityMetaData = new EntityMetaData(clz);

            EntityMetaData oldEntityMetaData = CACHE.putIfAbsent(clz, newEntityMetaData);
            if (oldEntityMetaData != null) {
                entityMetaData = oldEntityMetaData;
            } else {
                entityMetaData = newEntityMetaData;
            }
        }
        return entityMetaData;
    }

}
